//
// *  $Id: TestPageManager.java,v 1.3 2003/09/21 15:49:02 boisvert Exp $
// *
// *  Unit tests for PageManager class
// *
// *  Simple db toolkit
// *  Copyright (C) 1999, 2000 Cees de Groot <cg@cdegroot.com>
// *
// *  This library is free software; you can redistribute it and/or
// *  modify it under the terms of the GNU Library General Public License
// *  as published by the Free Software Foundation; either version 2
// *  of the License, or (at your option) any later version.
// *
// *  This library is distributed in the hope that it will be useful,
// *  but WITHOUT ANY WARRANTY; without even the implied warranty of
// *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// *  Library General Public License for more details.
// *
// *  You should have received a copy of the GNU Library General Public License
// *  along with this library; if not, write to the Free Software Foundation,
// *  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
// 

//*************************************************************************
//**  Included in JDMB 1.0 port to SharpDBM;  11/2013 Cyrus Neah cneah@codingreal.com
//**  SharpDBM is an independent reimplementation of the JDBM 1.0 software library  
//*************************************************************************

using SharpDBM;
using SharpDBM.recman;
using SharpDBM.helper;
using SharpDBM.btree;
using NUnit.Framework;



namespace SharpDBM.Test

.recman
{

	using NUnit.Framework;

///
// *  This class contains all Unit tests for {@link PageManager}.
// 
	[TestFixture]
    public class TestPageManager  
	{

		

		[Test]
 public virtual void setUp()
		{
			TestRecordFile.deleteTestFile();
		}

		[Test]
 public virtual void tearDown()
		{
			TestRecordFile.deleteTestFile();
		}

//    *
//     *  Test constructor
//     
 
//
		[Test]
 public virtual void testCtor()
		{
			RecordFile f = new RecordFile(TestRecordFile.testFileName);
			PageManager pm = new PageManager(f);

			f.forceClose();
		}

//    *
//     *  Test allocations on a single list.
//     
 
//
		[Test]
 public virtual void testAllocSingleList()
		{
			RecordFile f = new RecordFile(TestRecordFile.testFileName);
			PageManager pm = new PageManager(f);
			for (int i = 0; i < 100; i++)
			{
                NUnit.Framework.Assert.AreEqual((long)i + 1, pm.allocate(Magic.USED_PAGE), "allocate ");
			}
			pm.close();
			f.close();

			f = new RecordFile(TestRecordFile.testFileName);
			pm = new PageManager(f);
			PageCursor curs = new PageCursor(pm, Magic.USED_PAGE);
			long j = 1;
			while (true)
			{
				long cur = curs.next();
				if (cur == 0)
			  break;
                NUnit.Framework.Assert.AreEqual(j++, cur, "next");
				if (j > 120)
			  NUnit.Framework.Assert.Fail("list structure not ok");
			}
            NUnit.Framework.Assert.AreEqual(101, j, "total");
			pm.close();
			f.close();
		}

//    *
//     *  Runs all tests in this class
//     
		static void Main(string[] args)
		{
			// junit.textui.TestRunner.run(new TestSuite(typeof(TestPageManager)));
		}
	}

}